void main(List<String> args) {
  sayHello("dart");
  sayHello2("dart", 18, 1.8);
  sayHello3("dart", height: 1.8);
}

// 必选参数，必须传
void sayHello(String name) {
  print(name);
}

// 可选参数：位置可选参数 - 命名可选参数
// 注意：只有可选参数才可以有默认值
// 位置可选参数：[int age,double height]
// dart中没有函数的重载
// 实参和形参在进行匹配时，是根据位置匹配的
// void sayHello2(String name, [int age = 10, double height = 1.8]) {}
void sayHello2(String name, [int? age, double? height]) {}

// 命名可选参数
// 不受位置影响
// 类似python
void sayHello3(String name, {int? age, double? height}) {}
